package cn.tedu.design;
/**本类用于实现单例设计模式方案1*/
public class Singleton1 {
    public static void main(String[] args) {
        MySingle s1 = MySingle.getSingle();//地址值相同，因为这只是调用getSingle()
        MySingle s2 = MySingle.getSingle();
        System.out.println(s1 == s2);//true
        System.out.println(s1);
        System.out.println(s2);
//        System.out.println(MySingle.single);//可以由类名.属性创建对象，这样未能按预先设定的方法走，所有需要加private
    }
}


//0.创建自己的单例程序
class MySingle{
    //1.提供本类的构造方法，并将构造方法私有化
    /**1.构造方法私有化的目的：为了防止外界随意调用，创建本类对象
     * private只能在本类使用，出了本类无法使用*/
    private MySingle(){ }
    
    //2.创建本类的对象
    //4.2由于静态资源只能静态资源，所以single对象也需要设置为静态
    /***/
    private static MySingle single = new MySingle();
    
    //3.提供公共的访问方式，返回刚刚创建好的对象
    //4.1为了不通过对象，直接调用本方法，需要将本方法设置为静态
    public static MySingle getSingle(){
        /**后续可以添加权限*/
        return single;
    }
    
}